In general, direct memory access (DMA) provides various techniques that enable a device or process of a local host computing device to directly read and write local memory of that host device without interrupting the host's CPU(s). In contrast, remote direct memory access (RDMA), which is increasingly being deployed in data centers, extends traditional DMA-based techniques to enable a remote device or process to directly read and write memory of a remote computing device without interrupting the CPU(s) of the remote computing device.
Existing RDMA-based techniques, such as, for example, InfiniBand, iWARP, RDMA over Converged Ethernet (RoCE), etc., make use of RDMA-enabled network interface controller (NICs). When writing data across an RDMA-enabled network, servers or other computing devices equipped with an RDMA-enabled NIC typically apply DMA to read data in a user- or process-specified buffer or memory address and transmit that data as a self-contained message to an RDMA-enabled NIC of networked computing device. The receiving RDMA-enabled NIC then uses DMA to write that data into a user- or process-specified buffer or memory address. Similarly, for data reads across RDMA-enabled networks, the local computing device uses the RDMA-enabled NIC to transmit a self-contained message to an RDMA-enabled NIC of the remote computing device to request data from a user- or process-specified buffer or memory address. The remote computing device then applies DMA to read the requested data and return it to the local computing device via the RDMA-enabled NICs of each device.